<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // ES: ECMA script   
        // ES6 : ecma script 2015；
        // ES5 ES6（2015）+  ES7....
        // 网景 netscape ---》 js标准 规则的 定义  --- ECMA组织；

        // 一.let 声明变量,let的出现是为了取代var ； 
        //1. 使用 ： 
        // let a = 10;
        // console.log(a);
        // 2.不能重复声明 

        // var 相同的变量可以重复声明 ，后一个会覆盖前一个值；
        // var a = 10;
        // var a = 20;
        // console.log(a);

        // let 同一个变量不能被重复声明
        // let a = 10;
        // let a = 20;
        // console.log(a);
        // let a;  // 声明 
        // a = 10;
        // a = 20;  // 赋值 ；
        // console.log(a);

        // 3.let 声明的变量 不会挂载在window上
        // var a = 10;
        // console.log(window.a);

        // let a = 10;
        // console.log(window.a);

        // 4.let 支持块级作用域 
        // 块级作用域 ： 就是 大括号包裹的作用域
        // let 只会在 块级作用域内能够访问 ；

        // var 1.全局作用域  2. 函数作用域

        // {
        //     // 块级作用域
        //     // let a = 10;
        //     // console.log(a);
        //     var a = 10;

        // }

        // {
        //     console.log(a);
        // //    console.log(a);
        //     // let a = 20;
        //     // console.log(a);

        // }

        // for(let i=0;i<3;i++){
        //     console.log(i);
        //     for(let i=0;i<3;i++){
        //         console.log(i);
        //     }
        // }

        // {
        //     // 作用域1
        //     let i = 0;
        // }


        // {
        //     // 作用域2
        //     let i=1;

        // }

        // {
        //     // 作用域3
        //     let i=2
        // }



        // 5. let 没有声明前置 预解析 （hoisting） ；
        // var 的预解析 
        // var a;
        // console.log(a);
        // a = 10;
        // let 一旦声明 会把变量 放在一个叫 暂时性死区地方
        // Temporal Dead Zone :暂时性死区；
        // console.log(a);
        // let a = 10;
        // console.log(a);

        

    </script>
</body>
</html>